package com.example.demo.Test;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: sfx
 */
public class TestDemo {

    /**
     * 输入一个长度为 n 字符串，输出该字符串中字符的所有排列。
     * 例如输入字符串ABC，输出由字符A、B、C所能排列出来的所有字符串
     * ABC，ACB，BAC，BCA，CBA和CAB（不限制顺序）。
     */

    private static List<String> res = new ArrayList<>();
    private static StringBuilder st = new StringBuilder();

    public static void backTracking(String str, int startIndex) {
        if (startIndex == str.length()) {
            res.add(st.toString());
            return;
        }
        for (int i = startIndex; i < str.length(); ++i) {
            st.append(str.charAt(i));
            backTracking(str,i+1);
            st.deleteCharAt(st.length() - 1);
        }
    }

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str = scan.nextLine();
        backTracking(str, 0);
        System.out.println(res);
    }

    /**
     * 有一张学生成绩表student_table，包含id（自增id）、name（同学姓名，无重名）、
     * subject（科目）、grade（分数），查出三门（总科目数目大于3）以上科目成绩大于80分的同学姓名。
     * 数据示例：
     * id	name	subject	grade
     * 1	'张三'	'高等数学1'	85
     * 2	'王五'	'大学英语1'	76
     * 3	'张三'	'计算机网络'	91
     * 4	'张三'	'软件工程'	56
     * 5	'李四'	'高等数学1'	83
     * 6	'张三'	'操作系统'	72
     * 7	'李四'	'数据
     * select id,name,subject,grade where
     */
}
